package ar.edu.utn.frba.disenio.aterrizar.fechas;

import java.util.Collection;

import ar.edu.utn.frba.disenio.aterrizar.excepciones.NoEsParseablePorFormatoException;
import ar.edu.utn.frba.disenio.aterrizar.excepciones.NoHayFormatosEnFlexibleException;
import ar.edu.utn.frba.disenio.aterrizar.excepciones.NoSePuedeParsearConNingunFormatoException;
import ar.edu.utn.frba.disenio.aterrizar.excepciones.ParserErrorNumeroNoValidoException;

public class Flexible extends Formato {

	private Collection<Formato> formatos;
	
	///////////////////////// GETTER Y SETTER //////////////////////////////
	
	public Collection<Formato> getFormatos() {
		return formatos;
	}

	public void setFormatos(Collection<Formato> formatos) {
		this.formatos = formatos;
	}

	////////////////////////////////////////////////////////////////////////
	
	public Flexible(Collection<Formato> formatos){
		this.setFormatos(formatos);
		
	}
	
	@Override
	public Fecha parsear(String unString){
		
		try{
			for(Formato unFormato: formatos){
				try{
					Fecha unaFecha = unFormato.parsear(unString);
					return unaFecha;
				}catch(ParserErrorNumeroNoValidoException e){
					continue;
				}catch(NoEsParseablePorFormatoException e){
					continue;
				}
			}
			
			throw new NoSePuedeParsearConNingunFormatoException();
			
		}catch(NullPointerException e){
			throw new NoHayFormatosEnFlexibleException();
		}		
		
	}
}